using B.S.Domain.Dto.AICustomerServiceDTO;
using B.S.Requst;
using MediatR;

namespace B.S.Data.MES.API.Applications.AICustomerService.Commands
{
    /// <summary>
    /// AI对话请求命令
    /// </summary>
    public class AIConversationCommand : IRequest<APIRequst<AIConversationResponseDTO>>
    {
        public AIConversationRequestDTO Request { get; set; } = new();
    }

    /// <summary>
    /// 获取对话历史命令
    /// </summary>
    public class GetConversationHistoryCommand : IRequest<APIRequst<APIPageing<List<ConversationHistoryDTO>>>>
    {
        /// <summary>
        /// 会话ID
        /// </summary>
        public string? SessionId { get; set; }

        /// <summary>
        /// 用户ID
        /// </summary>
        public int? UserId { get; set; }

        /// <summary>
        /// 开始时间
        /// </summary>
        public DateTime? StartTime { get; set; }

        /// <summary>
        /// 结束时间
        /// </summary>
        public DateTime? EndTime { get; set; }

        /// <summary>
        /// 页码
        /// </summary>
        public int PageIndex { get; set; } = 1;

        /// <summary>
        /// 页大小
        /// </summary>
        public int PageSize { get; set; } = 20;
    }

    /// <summary>
    /// 满意度评价命令
    /// </summary>
    public class SatisfactionRatingCommand : IRequest<APIRequst<int>>
    {
        public SatisfactionRatingDTO Rating { get; set; } = new();
    }

    /// <summary>
    /// 关闭对话命令
    /// </summary>
    public class CloseConversationCommand : IRequest<APIRequst<int>>
    {
        /// <summary>
        /// 会话ID
        /// </summary>
        public string SessionId { get; set; } = string.Empty;

        /// <summary>
        /// 关闭原因
        /// </summary>
        public string? CloseReason { get; set; }
    }
}
